package JDK8time;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
         //JDK8时间类
        //1.Date类
        //ZoneId时区,Instant时间戳,ZoneDateTime带时区的时间
        //2.SimpleDateFormat类
        //SimpleDateFormatter用于时间格式化和解析
        //3.Calender日历类
        //LocalDate:年月日,LocalTime:时分秒,LocalDateTime:年月日时分秒
        //4.工具类
        //Duration时间间隔（秒，纳秒）,Period（年月日）,ChronoUnit时间间隔，所有单位
        //ZoneId时区
        /* **
        Set<String> zoneId=ZoneId.getAvailableZoneIds();//获取Java支持的全部时区
        System.out.println(zoneId);

        ZoneId zone=ZoneId.systemDefault();//获取系统默认时区
        System.out.println(zone);

        zone=ZoneId.of("America/Los_Angeles");//获取指定的时区
        System.out.println(zone);*/

        //Instant时间戳
        /*  **
        Instant instant = Instant.now();//获取当前时间的Instant对象,标准时间
        System.out.println(instant);

        Instant instant2 = Instant.ofEpochSecond(0L);//获取指定单位的Instant对象，包括秒，毫秒，纳秒,表示在起始时间过了多少
        System.out.println(instant2);

        ZonedDateTime  zonedDateTime=instant.atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println(zonedDateTime);

        //isXxx函数用来判断两个时间短谁在前谁在后
        Instant instant3 = Instant.ofEpochSecond(0L);//毫秒
        Instant instant4 = Instant.ofEpochSecond(1000L);
        System.out.println(instant3.isBefore(instant4));

        Instant instant5 = Instant.ofEpochSecond(512L);
        //minusXxx函数表示对时间的减少，plus函数表示对时间的增加
        Instant instant6 = instant5.minusSeconds(1L);
        System.out.println(instant6);
        Instant instant7 = instant5.plusSeconds(1L);
        System.out.println(instant7);
        */

        //ZoneDateTime带时区的时间
        /*now函数，of函数，with函数，minus函数，plus函数。除with函数外，都与Instant时间戳用法类似，此处只学习with函数。
        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
        ZonedDateTime zonedDateTime1 =ZonedDateTime.of(2023,12,12,11,59,59,59, ZoneId.of("Asia/Shanghai"));
        System.out.println(zonedDateTime);
        ZonedDateTime zonedDateTime2=zonedDateTime.withMonth(1);//调整成相应月份年份等等
        System.out.println(zonedDateTime2);
        */

        //DateTimeFormatter
        /*此方法为格式化时间，并返回相应格式的时间对象
        ZonedDateTime zonedDateTime=ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//ofPattern用于获取格式对象
        String formattedDate = zonedDateTime.format(formatter);//format方法传递时间对象
        System.out.println(formattedDate);
         */
        
    }
}
